const jwt = require('jsonwebtoken');
const { pool } = require('../config/db');

// 管理员身份验证中间件
exports.authenticateAdmin = async (req, res, next) => {
  try {
    // 从请求头中获取token
    const authHeader = req.headers.authorization;
    const token = authHeader && authHeader.split(' ')[1];

    if (!token) {
      return res.status(401).json({ success: false, message: '未提供认证令牌' });
    }

    // 验证token
    let decoded;
    try {
      decoded = jwt.verify(token, process.env.JWT_SECRET);
    } catch (error) {
      return res.status(401).json({ success: false, message: '令牌无效' });
    }

    // 检查用户是否为管理员
    const query = 'SELECT * FROM admin_users WHERE id = ?';
    const [rows] = await pool.execute(query, [decoded.id]);
    
    if (rows.length === 0) {
      return res.status(403).json({ success: false, message: '无管理员权限' });
    }

    // 将管理员信息添加到请求对象中
    req.admin = rows[0];
    next();
  } catch (error) {
    console.error('管理员身份验证失败:', error);
    res.status(500).json({ success: false, message: '服务器错误，请稍后重试' });
  }
};